package jwcb.hire.common.core.utils;

import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.digest.DigestUtil;
import jwcb.hire.common.domain.domain.ResultCode;
import jwcb.hire.common.domain.exception.ServiceException;

import java.nio.charset.StandardCharsets;
import java.util.Objects;

/**
 * AES加密类
 */
public class AESUtil {

    /**
     * 前后端规定的密钥
     */
    private static final byte[] KEYS = "12345678abcdefgh".getBytes(StandardCharsets.UTF_8);


    /**
     * aes加密
     * @param data 原始数据
     * @return 加密后的数据
     */
    public static String encryptHex(String data) {
        if(StringUtil.isBlank(data)){
            return null;
        }
        return SecureUtil.aes(KEYS).encryptHex(data);

    }


    /**
     * 解密数据
     * @param data 加密后的数据
     * @return 原始数据
     */
    public static String decryptHex(String data) {
        try {
            if(StringUtil.isBlank(data)){
                return null;
            }
            return SecureUtil.aes(KEYS).decryptStr(data);
        }catch (Exception e) {
            throw new ServiceException(ResultCode.DECODE_FAIL);
        }
    }


    public static void main(String[] args) {
        System.out.println(DigestUtil.sha256Hex("Jwcb051215"));
        System.out.println(AESUtil.encryptHex("15815221751"));
        System.out.println(Objects.equals(AESUtil.encryptHex("Jwcb051215"), "ed7d597da075b0fe8a7c7d0d6ca7f8ec"));
        System.out.println(AESUtil.decryptHex("ed7d597da075b0fe8a7c7d0d6ca7f8ec"));
    }

}
